<?php

namespace app\command;

use think\Console;
use think\console\Command;
use think\console\Input;
use think\console\Output;
use think\console\input\Option;

class RefreshData extends Command
{
    protected function configure()
    {
        // 指令配置
        $this->setName('migrate:refresh')
            ->setDescription('重置数据库')
            ->addOption('yes', 'y', Option::VALUE_NONE, '是否确认')
            ->addOption('mock', 'm', Option::VALUE_NONE, '是否导入模拟数据')
            ->setHelp(sprintf('%重置数据库%s', PHP_EOL, PHP_EOL));
        // 设置参数

    }

    protected function execute(Input $input, Output $output)
    {
        // 再次确认是否重置数据库
        $confirm = $input->getOption('yes');
        if (!$confirm) {
            if (!$output->confirm($input, '确认重置数据库? [y]/n')) {
                $output->writeln('操作已经取消!');
                return;
            } else {
                $confirm = true;
            }
        }
        Console::call('migrate:drop', ['--yes']);
        Console::call('migrate:run');

        // 是否导入模拟数据
        if ($input->getOption('mock')) {
            Console::call('util:mockdata');
        }

        $output->writeln('成功');
    }
}
